/*
 * File: include.v
 * Module: none
 * Authors: Cody Cziesler, Nick Desaulniers
 * Created: 7/19/2011
 * Verilog HDL
 * Description: Include file for defined macros
 *
 * Revision 0.01 - File Created
 * Revision 1.00 - Added function opcodes, more instruction opcodes
 */

`timescale 1ns / 10ps

// ALU Defines
`define NOOP      5'h00
`define CPY       5'h01
`define ADD       5'h02
`define SUB       5'h03
`define MUL       5'h04
`define AND       5'h05
`define OR        5'h06
`define NOT       5'h07
`define XOR       5'h08
`define LS        5'h09
`define RS        5'h0A
`define ZERO      5'h0B
`define NOR       5'h0C
`define XNOR      5'h0D
`define NAND      5'h0E
`define INC       5'h0F
`define DEC       5'h10
`define LSA       5'h11
`define RSA       5'h12

// Instruction opcodes
`define NOOP_i    4'h0
`define CPY_i     4'h0
`define ADD_i     4'h0
`define SUB_i     4'h0
`define MUL_i     4'h0
`define AND_i     4'h0
`define OR_i      4'h0
`define NOT_i     4'h0
`define XOR_i     4'h1
`define NOR_i     4'h1
`define XNOR_i    4'h1
`define LS_i      4'h1
`define RS_i      4'h1
`define INC_i     4'h1
`define DEC_i     4'h1
`define ZERO_i    4'h1

`define BEQ_i     4'h3
`define BNE_i     4'h4
`define LD_i      4'h5
`define STR_i     4'h6
`define ADDI_i    4'h7
`define SUBI_i    4'h8

`define JMP_i     4'hF

// Function opcodes
`define NOOP_f    3'h0
`define CPY_f     3'h1
`define ADD_f     3'h2
`define SUB_f     3'h3
`define MUL_f     3'h4
`define AND_f     3'h5
`define OR_f      3'h6
`define NOT_f     3'h7
`define XOR_f     3'h0
`define NOR_f     3'h1
`define XNOR_f    3'h2
`define LS_f      3'h3
`define RS_f      3'h4
`define INC_f     3'h5
`define DEC_f     3'h6
`define ZERO_f    3'h7

// Branch defines
// Branch Parameters
`define DBR       2'b00 // Don't Branch
`define BEQ       2'b01 // Branch is equal
`define BNE       2'b10 // Branch if not equal
`define JMP       2'b11 // Always Branch
